import { IPSAppDEField } from '../../app/dataentity/ipsapp-defield';
import { IPSCodeList } from '../../codelist/ipscode-list';
import { IPSDataItem } from '../../data/ipsdata-item';

/**
 *
 * 子接口类型识别属性[]
 * @export
 * @interface IPSDETreeNodeDataItem
 */
export interface IPSDETreeNodeDataItem extends IPSDataItem {
  /**
   * 代码表输出模式
   * @description 值模式 [列表项代码表转换模式] {NONE：直接值、 FRONT：绘制时转换（前台）、 BACKEND：控制器转换（后台） }
   * @type {( string | 'NONE' | 'FRONT' | 'BACKEND')}
   */
  cLConvertMode: string | 'NONE' | 'FRONT' | 'BACKEND';

  /**
   * 默认值
   * @type {string}
   */
  defaultValue: string;

  /**
   * 前端代码表
   *
   * @type {IPSCodeList}
   */
  getFrontPSCodeList(): IPSCodeList | null;

  /**
   * 前端代码表
   *
   * @type {IPSCodeList}
   */
  get frontPSCodeList(): IPSCodeList | null;

  /**
   * 前端代码表（必须存在）
   *
   * @type {IPSCodeList}
   */
  getFrontPSCodeListMust(): IPSCodeList;

  /**
   * 应用实体属性
   *
   * @type {IPSAppDEField}
   */
  getPSAppDEField(): IPSAppDEField | null;

  /**
   * 应用实体属性
   *
   * @type {IPSAppDEField}
   */
  get psAppDEField(): IPSAppDEField | null;

  /**
   * 应用实体属性（必须存在）
   *
   * @type {IPSAppDEField}
   */
  getPSAppDEFieldMust(): IPSAppDEField;

  /**
   * 脚本代码
   * @type {string}
   */
  scriptCode: string;

  /**
   * 脚本代码模式
   * @type {boolean}
   * @default false
   */
  customCode: boolean;

  /**
   * 启用项权限控制
   * @type {boolean}
   * @default false
   */
  enableItemPriv: boolean;
}
